
==============================================================================

                            JUCE version 1.29

==============================================================================
Changelist for version 1.29

- moved the Juce demo app into the main Juce tree, to make it all easier to download
- added classes for FLAC and Ogg-Vorbis audio formats
- added support for native window title bars and borders
- moved the window style flag enum out of Component and into ComponentPeer, adding lots of new flags.
- changed some of the methods in ComponentBoundsConstrainer so it'd work with the new windowing stuff
- couple of minor fixes to named pipes on windows
- some Quicktime component fixes and optimisations
- changed the AudioFormat class to allow multiple file extensions, and added a method AudioFormatManager::getWildcardForAllFormats() to make it easy to show browsers for audio files
- on OSX, added a juce.xcconfig file to the XCode build, to make it easier to select whether to build for gcc3 or 4
- made the TabBarButton class public to allow customised tab bar components
- changed the default font on OSX from Verdana to Lucida Grande, as Verdana isn't actually guaranteed to be installed on all systems


==============================================================================
Changelist for version 1.28

- Cleaned up the audio device driver architecture, adding an AudioIODeviceType class to represent the different types, (e.g. DSound, ASIO, CoreAudio, ALSA, etc). The AudioIODevice class is now an abstract base class, and instances can only be created by using an AudioIODeviceType object. This means that user code no longer needs to care whether support for ASIO is enabled or not.
- Fixes to the ReadWriteLock class
- Couple of bugfixes to stop older VC7 compilers complaining
- Finally found a way of making the windows come to the front correctly under Gnome on Linux
- Fixed a linux mouse focus bug that messed up menus
- New class: Socket, which is.. you guessed it..  a socket.
- New class: NamedPipe, which is, unsurprisingly, a named pipe, for interprocess comms.
- new class: InterprocessConnection, which manages a simple two-way socket or pipe-based message passing connection to another process or machine on the network.
- Added a new interprocess comms page to the demo, to demonstrate InterprocessConnections.
- Improvements to repaint speed on win32 when there are complex repaint regions
- Fix for a mac windowing bug that stopped modal windows coming to the front correctly

==============================================================================
Changelist for version 1.27

- lots of new file selector classes: DirectoryContentsList, FileListComponent, FileChooserDialogBox, FileBrowserComponent, FileFilter, etc. These can be used either as separate components or as a ready-made dialog box file chooser, which means that the Linux build finally has a file chooser!
- jazzed-up the colour selector to give more control over how it looks
- added a simple pattern match (for matching filenames, mainly) to the String class
- fixes to avoid problems with drifting clocks on the new dual-core intel cpus
- added UTF-8 conversion methods to the String class
- made PropertiesFile support unicode strings
- new class: BorderSize, which is used to represent the gaps around things - I've changed a few methods in classes like LookAndFeel, ResizableWindow, Component to use this instead of specifying the gaps manually, which was a bit messy.
- new class: AudioDataConverters, which contains methods for converting floating point audio to various integer formats
- new static_jassert macro for doing compile-time assertions
- fixes for mac MidiInput with certain drivers
- tidied up the MemoryBlock class and got rid of its virtual base class to make it quicker. Also dumped the AlignedMemoryBlock class: if anyone wants it back, let me know and I'll do a new version!
- optimised repainting for cases where there are a lot of deeply-nested components
- tweak to the broadcast message code on win32 to avoid deadlocks
- fixes for GCC4.0 optimised build under linux - the crashes here were due to strict aliasing in some numeric conversion functions. I've been through and made them more complient now.

==============================================================================
Changelist for version 1.26

- Linux audio support using ALSA! This is a first stab at an implementation, so I've only had chance to try it on one soundcard - linux audio experts, please let me know what I've done wrong!
- Restructured the way components are housed in windows, getting rid of NativeDesktopWindow and instead having a ComponentPeer base class, of which there may be more than one implementation. (This won't make any difference to most people, only power-users)
- Graphics contexts now work with a RectangleList as their clip region, instead of just a single rectangle
- added some methods to Desktop to access a list of top-level desktop components
- fixes and improvements to TextEditor, improving its handling of word-wrapping
- added a QuickTime page and an audio input monitor to the demo app.

==============================================================================
Changelist for version 1.25

- new class: TopLevelWindow to handle the concept of "active" windows
- new class: MidiMessageCollector helper for realtime midi input, and created a midi folder to tidy up the directory structure of the midi classes.
- added a JUCE_CATCH_UNHANDLED_EXCEPTIONS config to turn off the juce exception logging
- renamed JUCEApplication::getApplicationInstance() to JUCEApplication::getInstance(), for consistency with all the other singletons. Sorry for the hassle, but it's easy to find-and-replace it in your code.
- finished keyboard navigation for menu bars
- new class: Synthesiser, which is an abstract base class for multitimbral synths. Also added one of these to the audio page of the Juce demo
- TreeViews now have an extra item width parameter for each item, and horizontal scrollbars if items are too wide to fit on screen.

==============================================================================
Changelist for version 1.24

- more flexible gradient control, allowing sequences of colours
- new class: DocumentWindow, which is a resizable window with a titlebar, nice-looking maximise/minimise/close buttons, a menubar, and lots of cool options.
- improved the ability for ResizableWindows to be used as child components as well as on the desktop, without them losing their drop-shadows
- eye-candy changes to ShinyLookAndFeel, adding glassy-looking buttons
- added a JUCE_VERSION macro to allow conditional builds against different juce versions
- added an option to PopupMenu that allows any component to be easily added as a custom component, rather than only ones derived from PopupMenuCustomComponent.
- made the win32 crt memory debugging overrides conditional with JUCE_CHECK_MEMORY_LEAKS macro in juce_Config.h
- new class: LassoComponent for easy lassoing of groups of UI objects
- additions to SelectedItemSet to improve the logic used when multi-selecting items that might be dragged.
- handy new method: File::replaceWithText()
- new class: RecentlyOpenedFilesList
- updated some crt function names for compatibility with the latest msvc pro
- misc fixes to glyph layout, text editor listener callbacks + lots of other things.
- new class: ComponentBoundsConstrainer for more flexible control over resizing and dragging components around. This replaces the ResizableBase class.
- popup menus now accept keyboard navigation (not done this for jumping between them on menubars yet, though)

==============================================================================
Changelist for version 1.23

- new class AudioDeviceManager - this makes it super-easy for audio applications to manage the user's choice of audio and midi devices, and to save and load the user's audio settings.
- new class AudioDeviceSelectorComponent - goes with the AudioDeviceManager to make it easy to let the user change the audio settings. I've also updated the JuceDemo audio section to use these new features.
- fix to ProgressBar
- a few graphics rendering fixes, and some optimisations for pixel blending operations
- change to AudioIODeviceCallback class to add methods to tell the callback when the device starts and stops
- small tweak to AudioSourcePlayer now that it no longer needs to be told the sample rate and buffer size
- a few more tweaks for 64-bit compatibility on linux
- added a checkNewSize() method to ResizableBase and ResizableWindow to allow custom resize constraints.
- fix for a mac midi input bug that could freeze the system when malformed midi packets arrive
- optional drop-shadows on menus via the LookAndFeel class

==============================================================================
Changelist for version 1.22

- new class: AudioFormatManager
- removed any dependencies on DSound.h or DSound.lib so Juce can be built with the latest Platform SDK without needing the DX SDK as well.
- fixed a mac drag-and-drop bug
- made drop-shadows optional for alert boxes + splash screens
- added some fixes for compiling on gcc4.0.2 in mandriva linux
- big restructuring of the graphics code to make it ready for adding OS or hardware-accelerated UI rendering. In its current state it should be pretty much the same speed as before, but I've moved all the software rendering into one class. Small changes to the Image class mean that you can no longer get a pointer to its pixels, you need to lock and unlock a section of the image, so that this will also work in future for images that aren't kept in main memory.

==============================================================================
Changelist for version 1.21

- new class: MidiBuffer - an efficient array of midi messages for use in audio filters
- new class: MidiKeyboardComponent - a UI comp that shows a piano keyboard and has lots of groovy features
- additions to DragAndDropContainer to allow files to be dragged to external applications
- fix to Array::move()
- added a couple of accessor methods to TreeViewItem
- changed the colour selector component to make the alpha-channel optional
- fixed a layout bug with some tooltips
- fixes to the AIFF file format handler
- efficiency improvements to the Timer class
- add a Component::visibilityChanged() callback method
- added file and line info to the internal exception handling code
- linux window focus bugfix

==============================================================================
Changelist for version 1.20

- changes to support the latest XCode 2.2 on the Mac, and some changes ready for Intel-based macs
- changes to support the latest version of VSExpress
- optimisations to DirectoryIterator - should make it much faster when scanning slow disks
- optimised the way Timers are triggered
- mac fixes for repainting transparent windows on 10.4
- some tweaks necessary for AudioUnit support

==============================================================================
Changelist for version 1.19

- added some more translation macros for various strings that were missing
- translation files can now contain escaped characters, e.g. "\t" or "\n"
- added a method to the QuickTimeMovieComponent to manually unload QT, as the automatic method it was using could interfere with other uses of QT in your app
- on the mac, minimising windows now animates and properly minimises them rather than just hiding them
- on the mac, hide/show application now works correctly
- small fix to ComboBox/FilenameComponent
- updated to include the latest versions of all 3rd party libraries - i.e. libjpeg, libpng and zlib, so lots of speed and security improvements there
- added ImageFileFormat::writeImageToStream() method, currently supporting writing of JPEG and PNG files
- fixed a bug in PopupMenus with a large number of items on them
- fixed a mac audio cd reading bug that could mix up the track order
- option for ComponentDragger to keep the entire thing on-screen

==============================================================================
Changelist for version 1.18

- fixes to the audio resampler, and also to some looping bugs in the audio sources
- ComboBox::getSelectedId() was returning -1 if nothing was selected - changes this to be 0 instead, (it should always have been 0, as item IDs must be non-zero, but -1 is a valid ID)
- added a tryEnter() method to CriticalSection
- some tweaks to DirectSound support to allow the names of input devices to be used as well as those of output devices
- got rid of deprecated calls to strcpy
- a few fixes for gcc4.0 compatibility on linux
- new instructions for linking to the library in XCode

==============================================================================
Changelist for version 1.17

- fixes for the Mac in string parsing and windowing
- fix for initial folder in the directory chooser on windows
- better unicode font name handling for winXP
- added some code for handling uncaught exceptions on the message thread
- made the DialogWindow::closeButtonPressed a pure virtual to force subclasses to handle it properly
- fixes for some keypresses that didn't work on foreign keyboards on the mac

==============================================================================
Changelist for version 1.16

- added some methods to the ComboBox class to allow it to have disabled items in its drop-down list, and also to have separator lines and subheadings for different sections.
- new class: ToneGeneratorAudioSource
- more bugfixes for win98 support, XML, unicode, etc.
- on the mac, added DEBUG macros to the project, as these weren't being properly set up before and assertions were left in the release build
- on the mac, the project now creates two separate lib files for release and debug: libjuce.a and libjucedebug.a. Unfortunately there's no obvious way of making an app link to the correct one depending on whether you're doing a debug build, so you'll need to manually set the one you want in your project.
- on linux, fixed up a SUPPORT_AFFINITIES macro because some distros have obsolete APIs that won't compile the cpu affinity code
- methods to add XML elements to a PropertySet

==============================================================================
Changelist for version 1.15

- got rid of the separate unicode/ansi builds, deleted juce_unicode.h and introduced a JUCE_STRINGS_USE_UNICODE macro which is defined in juce_Config.h. This is now turned on by default, so if there's some reason why you don't want your app to use unicode, you'll need to opt-out by disabling the macro.
- a bunch of unicode fixes and tweaks
- changed the method KeyPressMappingSet::isSafeToInvokeCallbacks() into isSafeToInvokeCommand() so it can choose whether particular commands are safe to run
- added an option to the ResizableBorderComponent and ResizableCornerComponent so that they can enforce a fixed aspect ratio
- new helper method for logging: FileLogger::createDefaultAppLogger()
- new class ResizableBase, as a base class for various resizable components
- various win98 fixes
- made the name of the juce namespace optional
- added methods Rectangle::toString() and fromString() to save/load rectangles easily
- fixed a stupid bug in FilenameComponent
- fixed mac file handling to fully support unicode filenames
- added drag-and-drop functionality to SimpleListBox, with helper methods in ListBox and also a few tweaks to DragAndDropContainer to help it deal with drag sources that are different from the component currently under the mouse. Also updated the demo drag-and-drop to use a listbox.
- various mac UI fixes, including some focus gain/loss improvements
- fixed the Dev-Cpp build, and added a Dev-Cpp project for building the demo app

==============================================================================
Changelist for version 1.14

- tweaks to ComboBox to make it look and work better, and also to give control over the text justification
- buttons and menu items can now be linked to a command in a KeyPressMappingSet, to trigger commands automatically
- change to Buttons - rather than using an ActionListener, buttons now use a special ButtonListener to respond to callbacks. This allows for up/down messages as well as clicks, and provides a pointer to the button that triggered the event. You might have to alter a few of your classes to deal with this - sorry! but it's not too difficult to change and it does make your code neater and more readable.
- Rewrote BubbleComponent to now be a base class for drawing arbitrary graphics inside a speech bubble shape. Created BubbleMessageComponent as a subclass for showing a text message in a bubble (like the old BubbleComponent used to do). 
- Sliders now have an optional pop-up bubble that shows you their current value while they're being dragged. This is handy for sliders which don't have a text box. See Slider::setPopupDisplayEnabled()
- Sliders can now have a suffix which they append to the text string that they display, to make it easy to show units without having to write a subclass
- cosmetic improvements to combo-boxes, menus, textboxes, sliders, and a few other bits + pieces
- mouse events now have a click counter to detect triple and quadruple clicks, and the TextEditor uses these to select the current paragraph or entire document
- added methods to the Desktop class to allow "global" MouseListeners to be registered, that will be told about all mouse events to all components
- new classes : MenuBarComponent and MenuBarModel for doing menu bars (obviously). This is a lightweight menu bar component, not yet an OS-specific menubar, which I'll eventually implement on the Mac, but the same model will apply to both.
- A few 64-bit compatibility tweaks, and the MessageCallbackFunction definition (used in MessageManager::callFunctionOnMessageThread()) now returns a void* instead of an int. This shouldn't affect many people.
- new class: FileBasedDocument - writing all the load/save/save-as logic for documents is pretty tedious, so this handy base-class takes care of all that stuff for you, doing all the file dialog boxes and asking whether to overwrite existing files, etc.
- on Windows, you can now build juce as a DLL, and your app can link to the DLL version by simply defining the JUCE_DLL macro before including the juce headers

==============================================================================
Changelist for version 1.13

- tidied up the components directory, recategorising the components that were there and putting them into more appropriate folders
- new class: PreferencesPanel for doing mac-style prefs panels.
- improved the KeyMappingEditorComponent to use a treeview instead of a list, and to just look a bit nicer.
- added parameters to DrawableButton to allow it to show another set of images when used as a toggle button.
- changed DrawableText to use a GlyphArrangement. (Not sure why I didn't do that in the first place)
- new class: ColourGradient for specifying a colour gradient (obviously..)
- DrawablePath now uses a ColourGradient to specify its fill type
- tweaked DrawableButton to make it a bit more flexible
- slider thumb size can now be specified in the lookandfeel class
- sliders now hide the mouse when in velocity-sensitive mode
- completely all-new TabbedComponent class, bearing no resemblence to the old one. This one's much easier to use, has look-and-feel support and looks nicer. I've also split out a TabbedButtonBar class so you can just use the bar on its own, rather than using the TabbedComponent, which manages the whole panel.
- fixed a leak when using modal components
- added a new slider style: LinearBar, which is a left-right bar with the text label over the top
- new class: ProgressBar, and a demo of the ThreadWithProgressWindow class (in jucedemo, widgets page, click the "show a popup menu" and it's under "alert windows")
- more refactoring of the LookAndFeel class, in particular moving colours into the base class so you can create looks with customised colours without needing to override any functions
- added an extra clicked() method to buttons so you can handle right clicks and modifier keys
- added a text colour option to the TextButton
- on Linux, sorted out setting the mouse position and invisible mouse cursors

==============================================================================
Changelist for version 1.12

- fixes to OpenGLComponent to make it work when parent components are moved
- added a flag to allow building of non-GUI apps under linux where UI libraries aren't present
- popup menus can now be positioned to align with a button or other component
- created some static initialiseJuce() functions in juce_Initialisation.h, to make it easy to embed juce in command-line apps or apps that use their own event-loop.
- new class: GroupComponent for drawing a line around a group of components
- new sliders! Completely revamped the Slider class so that it can now do vertical and rotary sliders, as well as allowing user-defined scaling and snapping.
- updated the Mac projects for XCode 2.1 and fixed the GCC4 problems. Apple have just changed the project format for this release, so if you're still on XCode 2.0, then sorry, you'll need to upgrade to build this release.
- a couple of changes to Path to clean up the elliptic-arc and pie-shape drawing methods
- added a Path::addStar() method for drawing star shapes and addBubble() for drawing speech bubble shapes
- new class: ComponentDragger to easily add logic for dragging components around
- new class: ResizableBorderComponent for adding windows-style resizable edges to components
- name change: ResizerComponent is now called ResizableCornerComponent to complement ResizableBorderComponent
- new class: ResizableWindow to make it easy to create top-level windows that are resizable/maximisable, and to make it easy to save/restore their position and state. DialogWindow has also now been changed to use this as its base class.
- renamed method: UndoManager::clear() becomes UndoManager::clearUndoHistory() (just to disambiguate when subclasses are used)
- Component::setInterceptsMouseClicks() can now optionally intercept clicks on child components
- fixed a bug in Array::move
- new set of classes: Drawables - these are used to build up a tree of graphic elements that can be drawn, forming a complex image. So far there are coloured shapes, images and text, but there may be more to add in future. They also have a persistence mechanism so can be saved/loaded and used as a vector graphics format. Although the classes are quite basic at the moment, I might expand these one day to form a way of rendering SVG.
- changes to Buttons - moved all the toggle-button logic into the base class so that all buttons can now have an on/off state and belong to button groups. TextButtons and DrawableButtons use this to draw themselves in an on/off state, and the old ToggleButton class is still there for a tickbox-style toggle button.
- new button type: DrawableButton which takes some Drawables as its image and has a few different styles. This button will ultimately take over from ImageButton and ShapeButton.
- moved isEnabled()/setEnabled() into the Component base class, so that it now applies hierarchically. (previously the different widgets all had their own separate enablement methods)
- fixes and tweaks to the windowing system on Linux to hopefully make it run more happily on Gnome

==============================================================================
Changelist for version 1.11

- fix for some file methods that were failing to identify volume type correctly in OSX10.4
- rearranged the OpenGL code to move it into the platform-specific folders.
- added openGL support for Linux
- replaced many of the win32 native calls with dual unicode/ansi implementations, so the same code will run on win98 but take advantage of unicode on win2000/XP
- reorganised the String::getHexValue() methods into 32 and 64 bit versions
- new class: SelectedObjectSet - for managing multiply-selected items
- fixed some maths bugs with rendering certain types of gradient brush
- buttons that auto-repeat can now be made to speed up the auto-repeat frequency the longer they're held down
- scrollbars can now have their buttons hidden
- implemented the MD5Checksum class
- new class: PropertySet, which now forms the base class for PropertiesFile
- each Component now has a set of named properties associated with it, which can be inherited from its parent component
- handy new method: DialogWindow::centreAroundComponent()
- finished implementing the Primes class
- finished the RSAKey class, to provide RSA public/private key cryptography
- beefed up the BitArray class, giving it a sign, so it can be used as a large number class, and added some new methods (mostly because they were needed for cryptography)
- implemented the BlowFish class, which is a symmetric-key encryption algorithm
- new layout classes: StretchableLayoutManager and StretchableLayoutResizerBar - these are for creating all kinds of sets of nested components that stretch to fill the available space, with vertical or horizontal divider bars to rescale them. I've added some code to the fonts page of the demo app to demonstrate how to use them
- better makefiles for Linux, generated using premake
- added xinerama support for Linux

==============================================================================
Changelist for version 1.10

- initial rough release of the Linux build! This is only the first release, so there are still a lot of things missing (audio support, file browsers, etc) and it's bound to be a bit buggy, but the demo app works!
- new class: FilenameComponent
- new class: ReadWriteLock for allowing multiple-reader access to a critical section.
- new class: SplashScreen
- new class: LocalisedStrings, which lets you use a translation file in your app for multi-language support
- improved the sample-rate conversion algorithm in ResamplingAudioSource
- some tweaks to the win32 demo projects (rtti wasn't enabled)
- made the image loading code support Exif digital camera files
- some enhancements to TextEditor and ComboBox, to allow a message to be displayed when nothing is yet entered or selected
- fixed a bug in SubregionStream
- changes to make the code GCC 3.4 complient

==============================================================================
Changelist for version 1.9

- OpenGL support with the OpenGLComponent class!
- fixed a bug with Array::addSorted that made list multi-selections go wrong
- added some methods to move array elements around
- added the TimeSliceThread class
- added the FileLogger class

==============================================================================
Changelist for version 1.8

- added some convenience methods to the URL class to download and parse a URL as a string, xml, etc.
- rewrote the TreeView class completely - sorry if you were using the old version, but this one's better, honest!
- TextEditors can now be used for entering passwords with an option to obscure their content
- renamed KeyPressMappingManager to KeyPressMappingSet, and tweaked it slightly
- and a load of bugfixes suggested by users
- updated the i/o streams to use 64-bit read/write positions, (and also the audio reader and writer classes)
- added an option to compile using unicode Win32 calls (turned on in win32_headers.h). This is off by default because although it's better for win2k/XP, it stops apps running on win98.

==============================================================================
Changelist for version 1.7

- new class: MouseHoverDetector
- new key-shortcut classes: KeyPressMappingManager and KeyMappingEditorComponent
- added QuickTime movie support via the QuickTimeMovieComponent class
- mouse-events are now time-stamped with the time the event occurred rather than using the time it was delivered (better for detecting double-clicks, etc)s
- getScreenX() now takes into account windows that are contained in non-juce parent windows (e.g. audio plugins)

==============================================================================
Changelist for version 1.6

- added a MessageManagerLock class for allowing multi-threaded access to UI components
- new audio source classes: PositionableAudioSource, BufferingAudioSource, AudioSourcePlayer, etc to make playback more generic

==============================================================================
Changelist for version 1.5

- added some workarounds to get it to build under the Borland C++ compiler
- added a VCExpress project, that should also (presumably) work in VC7
- changes to Component::focusGained() and focusLost() to indicate the cause of the focus change - be sure to check your code and update any places you've used these methods!
- changed NativeDesktopWindow::setFullScreen() to restore the last known size when full-screening is turned off
- tweaks to win32 window minimisation because some people had mysterious non-repainting windows when building with certain libraries
- added semi-transparent window support on the mac, and some fixes so that windows with the "appearsOnTaskbar" flag set will appear properly in expose

==============================================================================
Changelist for version 1.4

- made changes to the Mac event handling to allow Juce-based dynamic libraries to work correctly
- cleaned up a lot of warnings under newer MS compilers and got it to build under VC Express
- couple of minor midi bugfixes

==============================================================================
Changelist for version 1.3

- cleaned up various aspects of the code so it'll build under Mingw
- created a DevC++ project to build the library
- added some AudioFormatReader methods to scan for audio levels
- added some more timecode methods to MidiMessage
- the tab/shift-tab key now moves the focus between components
- changes to the DirectSound support to allow easier addressing of the individual devices and pair up matching input/output devices
- better build settings in XCode on the Mac, so it puts the build products in the right folder

==============================================================================
Changelist for version 1.2

- changed various bits of the message-handling code to allow it to work better when used to build DLLs on Windows

==============================================================================
Changelist for version 1.1

- added a StringPairArray class and used it to tidy up some other bits of code
- fixed StringArray::addTokens, which was missing out empty tokens
- added metadata to the audio format readers and writers
- added support for BWAV chunks to WavAudioFormat
- finished some ImageBrush and GradientBrush methods that hadn't been implemented
- added an operator= for the Image class
- tightened up some copy constructors and operator= methods for classes that shouldn't be copied
- added an AudioSubsectionReader class
- added AudioFormatWriter::writeFromAudioReader() and writeFromAudioSource() methods
- added a format type name to AudioFormatReaders and writers
- fixed a small bug with mouse cursors when using modal windows
- added some methods to AudioCDReader to scan for indexes (PC only)
- added FloatElementComparator and IntegerElementComparator classes
- fixed a couple of layout bugettes in AlertWindow
- added the ThreadWithProgressWindow class to make it easy to show a dialog box while a background task completes
- fixed a bug with certain accented characters not displaying correctly on the Mac
- fixed the cursor position sometimes being wrong in TextEditors when undoing/redoing
- added a sample rate parameter to AudioSource::prepareToPlay

==============================================================================
Changelist for version 1.0 - August 5th 2004

- initial release!

==============================================================================
